﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanLyRapChieuPhim.BUS;
using QuanLyRapChieuPhim.DTO;

namespace QuanLyRapChieuPhim.GUI
{
    public partial class uscThemNhanVien : UserControl
    {
        int Ma = -1;
        bool IsLoaded = false;
        string action = "";

        public uscThemNhanVien()
        {
            InitializeComponent();
        }

        private void uscThemNhanVien_Load(object sender, EventArgs e)
        {
            IsLoaded = false;
            Ma = int.Parse(Tag.ToString());
            LoadDefault();
            IsLoaded = true;
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            action = "Add";
            Ma = 0;
            if (!Check())
                return;
            NhanVienBUS BUS = new NhanVienBUS();
            string gioitinh = (rdNam.Checked == true) ? "Nam" : "Nữ";
            NhanVienDTO DTO = new NhanVienDTO
                (
                    Ma, txtTenNhanVien.Text, txtCMND.Text, dtpNgaySinh.Value, gioitinh,
                    txtDiaChi.Text, txtDienThoai.Text, int.Parse(cbChucVu.SelectedValue.ToString())
                );
            if (BUS.Add(DTO))
            {
                MessageBox.Show("Thêm thành công.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.None);
                return;
            }
            MessageBox.Show("Thêm thất bại.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.None);


        }

        private void btnCapNhap_Click(object sender, EventArgs e)
        {
            action = "Update";
            Ma = int.Parse(Tag.ToString());
            if (!Check())
                return;
            NhanVienBUS BUS = new NhanVienBUS();
            string gioitinh = (rdNam.Checked == true) ? "Nam" : "Nữ";
            NhanVienDTO DTO = new NhanVienDTO
                (
                    Ma, txtTenNhanVien.Text, txtCMND.Text, dtpNgaySinh.Value, gioitinh,
                    txtDiaChi.Text, txtDienThoai.Text, int.Parse(cbChucVu.SelectedValue.ToString())
                );
            if (BUS.Update(DTO))
            {
                MessageBox.Show("Thêm thành công.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.None);
                return;
            }
            MessageBox.Show("Thêm thất bại.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.None);


        }

        private void btnDienLai_Click(object sender, EventArgs e)
        {
            LoadDefault();
        }

        void LoadDefault()
        {
            lbsao01.Visible = false;
            lbsao02.Visible = false;
            lbsao03.Visible = false;
            lbsao04.Visible = false;
            lbThongBaoCMND.Visible = false;
            lbThongBaoNgaySinh.Visible = false;
            try
            {
                NhanVienDTO DTO = new NhanVienBUS().GetFromId(Ma);
                txtTenNhanVien.Text = DTO.TenNhanVien;
                txtCMND.Text = DTO.CMND;
                if (DTO.GioiTinh == "Nam")
                    rdNam.Checked = true;
                else rdNu.Checked = true;
                dtpNgaySinh.Text = DTO.NgaySinh.ToString();
                txtDienThoai.Text = DTO.DienThoai;
                txtDiaChi.Text = DTO.DiaChi;
                cbChucVu.DataSource = new ChucVuBUS().GetList();
                cbChucVu.DisplayMember = "TenChucVu";
                cbChucVu.ValueMember = "MaChucVu";
                cbChucVu.SelectedValue = DTO.MaChucVu;

            }
            catch (Exception)
            {
                txtCMND.Text = "";
                rdNam.Checked = true;
                dtpNgaySinh.Text = DateTime.Now.ToShortDateString();
                txtDienThoai.Text = "";
                txtDiaChi.Text = "";
                cbChucVu.DataSource = new ChucVuBUS().GetList();
                cbChucVu.DisplayMember = "TenChucVu";
                cbChucVu.ValueMember = "MaChucVu";
                cbChucVu.SelectedIndex = 0;
            }
        }

        bool Check()
        {
            lbsao01.Visible = false;
            lbsao02.Visible = false;
            lbsao03.Visible = false;
            lbsao04.Visible = false;
            lbThongBaoCMND.Visible = false;
            lbThongBaoNgaySinh.Visible = false;
            lbThongBaoSoDienThoai.Visible = false;
            int num;

            if (txtTenNhanVien.Text == "")
            {
                lbsao01.Visible = true;
                txtTenNhanVien.Focus();
                return false;
            }
            else if (txtCMND.Text == "")
            {
                lbsao02.Visible = true;
                txtCMND.Focus();
                return false;
            }
            else if (txtDienThoai.Text == "")
            {
                lbsao03.Visible = true;
                txtDienThoai.Focus();
                return false;
            }
            else if (txtDiaChi.Text == "")
            {
                lbsao04.Visible = true;
                txtDiaChi.Focus();
                return false;
            }
            else if (!int.TryParse(txtCMND.Text, out num))
            {
                lbThongBaoCMND.Text = "Số CMND không hợp lệ.";
                lbThongBaoCMND.Visible = true;
                txtCMND.Focus();
                return false;
            }
            else if (!int.TryParse(txtDienThoai.Text, out num))
            {
                lbThongBaoSoDienThoai.Visible = true;
                txtDienThoai.Focus();
                return false;
            }
            else if (dtpNgaySinh.Value.Year < 1910 || dtpNgaySinh.Value.Year > 1994)
            {
                lbThongBaoNgaySinh.Visible = true;
                dtpNgaySinh.Focus();
                return false;
            }
            else if (action == "Add")
            {
                if (new NhanVienBUS().GetIDFromCMND(int.Parse(txtCMND.Text)) > 0
                || new KhachHangBUS().GetIDFromCMND(int.Parse(txtCMND.Text)) > 0)
                {
                    lbThongBaoCMND.Text = "Số CMND dã được sử dụng.";
                    lbThongBaoCMND.Visible = true;
                    txtCMND.Focus();
                    return false;
                }
            }
            else if (action == "Update")
            {
                if ((new NhanVienBUS().GetIDFromCMND(int.Parse(txtCMND.Text)) > 0 && new NhanVienBUS().GetIDFromCMND(int.Parse(txtCMND.Text)) != Ma)
                || (new KhachHangBUS().GetIDFromCMND(int.Parse(txtCMND.Text)) > 0 && new KhachHangBUS().GetIDFromCMND(int.Parse(txtCMND.Text)) != Ma))
                {
                    lbThongBaoCMND.Text = "Số CMND dã được sử dụng.";
                    lbThongBaoCMND.Visible = true;
                    txtCMND.Focus();
                    return false;
                }
            }
            return true;
        }

    }
}
